home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / matrix.cq / matrix.c
Text File  |  1985-06-12  |  2KB  |  95 lines

  1. /*                      The Matrix Benchmark
  2.                        C Compiler Analysis
  3.                  February 1985 COMPUTER LANGUAGE
  4. */
  5. /*
  6. ** Matrix.c -- a benchmark based on the matrix multiplication
  7. ** program given by Jerry Pournelle in Byte October 1982 p. 254.
  8. **
  9. ** Type conversions have been made explicit with casts. Array
  10. ** and loop indices now start at 0.
  11. */
  12. #include "stdio.h"
  13. #define M     20
  14. #define N     20
  15. #define BELL  7
  16.  
  17. char gup;
  18. double summ, a[M][N], b[N][M], c[M][M];
  19.  
  20. main()
  21. {
  22.  
  23.     summ = 0.0;
  24.     printf("Hit any character to start\n");
  25.     gup = getchar();
  26.     
  27.     filla();
  28.     printf("\nA filled\n");
  29.     fillb();
  30.     printf("\nB filled\n");
  31.     fillc();
  32.     printf("\nC filled\n");
  33.     
  34.     matmult();
  35.     printf("\nMultiplied\n");
  36.     summit();
  37.     
  38.     printf("The sum is: %20f\n", summ);
  39.     putchar(BELL);
  40. }
  41.  
  42. filla()
  43. {
  44. int i, j;
  45.  
  46.     for (i=0; i < M; i++)
  47.         for (j = 0; j < N; j++)
  48.             a[i][j] = (double) (i+1) + (j+1);
  49. }
  50.  
  51. fillb()
  52. {
  53. int i, j;
  54.  
  55.     for (i=0; i < N; i++)
  56.         for (j = 0; j < M; j++)
  57.             b[i][j] = (double) (int) (((i+1) + (j+1)) / (j+1));
  58. }
  59.  
  60. fillc()
  61. {
  62. int i, j;
  63.  
  64.     for (i=0; i < M; i++)
  65.         for (j = 0; j < M; j++)
  66.             c[i][j] = (double) 0;
  67. }
  68.  
  69. matmult()
  70. {
  71. int i, j, k;
  72.  
  73.     for (i = 0; i < M; i++)
  74.         for (j = 0; j < N; j++)
  75.             for (k = 0; k < M; k++)
  76.                 c[i][j] = c[i][j] + a[i][k]*b[k][j];
  77. }
  78.  
  79. summit()
  80. {
  81. int i, j;
  82.  
  83.     for (i = 0; i < M; i++)
  84.         for (j = 0; j < M; j++)
  85.             summ = summ + c[i][j];
  86. }
  87. k]*b[k][j];
  88. }
  89.  
  90. summit()
  91. {
  92. int i, j;
  93.  
  94.     for (i = 0; i < M; i++)
  95.